search bar: Work with the new GtkSearchEntry
authorMatthias Clasen <mclasen@redhat.com>
Sun, 17 Feb 2019 04:58:06 +0000 (23:58 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 19 Feb 2019 05:25:59 +0000 (00:25 -0500)
Don't assume a search entry is an entry, and use
the editable api as far as possible.

gtk/gtksearchbar.c
gtk/gtksearchbar.h

index 93594d15f260e737034021488b044cd1ed6c02cb..0b3f916344c016b418156d592303ca9b8408943c 100644 (file)
@@ -148,9 +148,9 @@ gtk_search_bar_handle_event_for_entry (GtkSearchBar *bar,
   preedit_change_id = g_signal_connect (priv->entry, "preedit-changed",
                                         G_CALLBACK (preedit_changed_cb), &preedit_changed);
 
-  old_text = g_strdup (gtk_entry_get_text (GTK_ENTRY (priv->entry)));
+  old_text = g_strdup (gtk_editable_get_text (GTK_EDITABLE (priv->entry)));
   res = gtk_widget_event (priv->entry, event);
-  new_text = g_strdup (gtk_entry_get_text (GTK_ENTRY (priv->entry)));
+  new_text = g_strdup (gtk_editable_get_text (GTK_EDITABLE (priv->entry)));
 
   g_signal_handler_disconnect (priv->entry, preedit_change_id);
 
@@ -255,10 +255,12 @@ reveal_child_changed_cb (GObject      *object,
 
   if (priv->entry)
     {
-      if (reveal_child)
+      if (reveal_child && GTK_IS_ENTRY (priv->entry))
         gtk_entry_grab_focus_without_selecting (GTK_ENTRY (priv->entry));
+      else if (GTK_IS_SEARCH_ENTRY (priv->entry))
+        gtk_widget_grab_focus (priv->entry);
       else
-        gtk_entry_set_text (GTK_ENTRY (priv->entry), "");
+        gtk_editable_set_text (GTK_EDITABLE (priv->entry), "");
     }
 
   g_object_notify (G_OBJECT (bar), "search-mode-enabled");
@@ -284,8 +286,8 @@ gtk_search_bar_add (GtkContainer *container,
   /* If an entry is the only child, save the developer a couple of
    * lines of code
    */
-  if (GTK_IS_ENTRY (child))
-    gtk_search_bar_connect_entry (bar, GTK_ENTRY (child));
+  if (GTK_IS_EDITABLE (child))
+    gtk_search_bar_connect_entry (bar, GTK_EDITABLE (child));
 
   _gtk_bin_set_child (GTK_BIN (container), child);
 }
@@ -297,7 +299,7 @@ gtk_search_bar_remove (GtkContainer *container,
   GtkSearchBar *bar = GTK_SEARCH_BAR (container);
   GtkSearchBarPrivate *priv = gtk_search_bar_get_instance_private (bar);
 
-  if (GTK_IS_ENTRY (child))
+  if (GTK_IS_EDITABLE (child))
     gtk_search_bar_connect_entry (bar, NULL);
 
   gtk_center_box_set_center_widget (GTK_CENTER_BOX (priv->box_center), NULL);
@@ -350,7 +352,7 @@ gtk_search_bar_get_property (GObject    *object,
 }
 
 static void gtk_search_bar_set_entry (GtkSearchBar *bar,
-                                      GtkEntry     *entry);
+                                      GtkEditable  *editable);
 
 static void
 gtk_search_bar_dispose (GObject *object)
@@ -494,7 +496,7 @@ gtk_search_bar_new (void)
 
 static void
 gtk_search_bar_set_entry (GtkSearchBar *bar,
-                          GtkEntry     *entry)
+                          GtkEditable  *entry)
 {
   GtkSearchBarPrivate *priv = gtk_search_bar_get_instance_private (bar);
 
@@ -527,7 +529,7 @@ gtk_search_bar_set_entry (GtkSearchBar *bar,
 /**
  * gtk_search_bar_connect_entry:
  * @bar: a #GtkSearchBar
- * @entry: a #GtkEntry
+ * @entry: a #GtkEditable
  *
  * Connects the #GtkEntry widget passed as the one to be used in
  * this search bar. The entry should be a descendant of the search bar.
@@ -536,10 +538,10 @@ gtk_search_bar_set_entry (GtkSearchBar *bar,
  */
 void
 gtk_search_bar_connect_entry (GtkSearchBar *bar,
-                              GtkEntry     *entry)
+                              GtkEditable  *entry)
 {
   g_return_if_fail (GTK_IS_SEARCH_BAR (bar));
-  g_return_if_fail (entry == NULL || GTK_IS_ENTRY (entry));
+  g_return_if_fail (entry == NULL || GTK_IS_EDITABLE (entry));
 
   gtk_search_bar_set_entry (bar, entry);
 }
index e06e181f7d40ff3951f28b7312bada03e231b2f4..ebf31e3bcc1d6a6ef98cccb360f7963f6920395f 100644 (file)
@@ -78,7 +78,7 @@ GtkWidget*  gtk_search_bar_new             (void);
 
 GDK_AVAILABLE_IN_ALL
 void        gtk_search_bar_connect_entry   (GtkSearchBar *bar,
-                                            GtkEntry     *entry);
+                                            GtkEditable  *entry);
 
 GDK_AVAILABLE_IN_ALL
 gboolean    gtk_search_bar_get_search_mode (GtkSearchBar *bar);